<?php
session_start();
require_once '../model/Observacao.php';
require_once '../model/EspacoCultural.php';
class ObservacaoDLO {

    private $observacoes = array();
    private static $observacaoDLO;

    private function __construct() {
    }

    /**
     * @method ObservacaoDLO getInstance() para obter uma única instância do controlador
     * @return ObservacaoDLO
     */
    public static function &getInstance() {
        if (!isset (self::$observacaoDLO)) {
            if (!isset ($_SESSION['observacaoDLO'])) {
                $_SESSION['observacaoDLO'] = serialize(new ObservacaoDLO());
            }
            self::$observacaoDLO = unserialize($_SESSION['observacaoDLO']);
        }
        return self::$observacaoDLO;
    }

    public function cadastrar(&$texto, &$data_hora, &$nome_espaco) {
        $espaco = &EspacoCultural::consultarByNome($nome_espaco);
        $cod_espaco = &$espaco->getCod_espaco();
        $observacao = new Observacao();
        $observacao->setTexto($texto);
        $observacao->setData_hora($data_hora);
        $observacao->setEspaco(EspacoCultural::consultar($cod_espaco));
        $observacao->cadastrar();
    }

    public function &listar(&$nome_espaco) {
        $espaco = &EspacoCultural::consultarByNome($nome_espaco);
        $result = &Observacao::listar($espaco->getCod_espaco());
        $resultado = array();
        for ($i = 0; $i < sizeof($result); $i++) {
            $row = array();
            $row['cod_observacao'] = &$result[$i]->getCod_observacao();
            $row['texto'] = &$result[$i]->getTexto();
            $row['data_hora'] = &$result[$i]->getData_hora();
            $resultado[$i] = &$row;
            unset ($row);
        }
        return $resultado;
    }

    public function excluir(&$cod_observacao) {
        $observacao = null;
        if (isset ($this->observacoes[$cod_observacao])) {
            $observacao = &$this->observacoes[$cod_observacao];
        } else {
            $observacao = &Observacao::consultar($cod_observacao);
            $this->observacoes[$cod_observacao] = &$observacao;
            $_SESSION['observacaoDLO'] = serialize($this);
        }
        $observacao->excluir();
        unset ($this->observacoes[$cod_observacao]);
        $_SESSION['observacaoDLO'] = serialize($this);
    }

    public function alterar(&$cod_observacao, &$campo_id, &$campo_valor) {
        $observacao = null;
        if (isset ($this->observacoes[$cod_observacao])) {
            $observacao = &$this->observacoes[$cod_observacao];
        } else {
            $observacao = &Observacao::consultar($cod_observacao);
            $this->observacoes[$cod_observacao] = &$observacao;
            $_SESSION['observacaoDLO'] = serialize($this);
        }
        $observacao->alterarCampo($campo_id, $campo_valor);
        $this->observacoes[$cod_observacao] = &$observacao;
        $_SESSION['observacaoDLO'] = serialize($this);
    }
}
?>